<?php
/**
 * 
 * Esta es la clase modelo registro eqs.
 * @author Rosanna Paberli Jimenez Rosario
 *
 */
class RegistroEqsModel extends Model
{

	private $_nameTable = 'EQS_Registro';
	
	public function __construct()
	{
		parent::Model();
		$this->load->library(array('chcalendario'));
	}
	
	/**
	 * 
	 * Esta es la funcion que te permitira cargar los registros de la base de datos
	 * @param boolean $start
	 * @param boolean $offset
	 * @param boolean $sortname
	 * @param boolean $sortorder
	 */
	public function loadRegistro($start = FALSE, $offset = FALSE, $sortname = FALSE, $sortorder = FALSE)
	{
		 $this->db->where('id_clasificacion', 1);	
		 $query = $this->db->get_where($this->_nameTable, array('estatus_error' => 0));
		 return $this->_getArrayFromQueryResult($query);
		
	}
	
	/**
	 * 
	 * Esta funcion es la que se va a utilizar para hacer el historico del Modulo EQS
	 */
	public function loadRegistroHistroico()
	{
		$this->db->where('id_clasificacion',1);
		$this->db->where('estatus_error', 1);
		
		$query = $this->db->get($this->_nameTable);
		return $this->_getArrayFromQueryResult($query);
	}
	/**
	 * 
	 * Esta es la funcion que te permitira cargar los registros por id.
	 * @param integer $id
	 */
	
	public function loadSugerenciasQuejas()
	{
		 $query = $this->db->where('estatus_error',0);
		 $query = $this->db->where_in('id_clasificacion',array(2,4));
		 $query = $this->db->get($this->_nameTable);
		 return $this->_getArrayFromQueryResult($query);
	}
	
	
	public function loadQuejasSugerenciaHistorico()
	{
		$this->db->where('estatus_error',1);
		$this->db->where('id_clasificacion',2);
		$this->db->or_where('id_clasificacion',4);
			
		$query = $this->db->get($this->_nameTable);
		return $this->_getArrayFromQueryResult($query);
	}
	
	
	public function loadRegistroById($id)
	{
		$query = $this->db->get_where($this->_nameTable, array('id_registro' => $id));
		
		if($query->num_rows() == 0)
			return false;
			
			return new RegistroEqsTable($query->row());
	}
	
	/**
	 * 
	 * Esta es la funcion que te permitira cargar los datos de la base de datos especificando
	 * los datos que desee cargar
	 * @param array $where
	 */
	public function loadRegistroByWhere($where)
	{
		$query = $this->db->get_where($this->_nameTable, $where);
		return $this->_getArrayFromQueryResult($query);
	}
	
	private function _getArrayFromQueryResult($resurt)
	{
		
		   if($resurt->num_rows() == 0){
		       return FALSE;
		    }
			
			$registro_array = array();
			
			foreach ($resurt->result() as $record){
				$registro_array[] = new RegistroEqsTable($record);
			}
			return $registro_array;
	}
	
	/**
	 * 
	 * Esta funcion te permitira agregar un nuevo registro a la base de datos
	 * @param array $data
	 */
	public function addRegistro($data)
	{
		if($this->db->insert($this->_nameTable,$data)){
			return TRUE;
		}
			return FALSE;
	}
	
	/**
	 * 
	 * Esta es la funcion que te permite actualizar un registro de la base de datos.
	 * @param array $data
	 * @param integer $id
	 */
	public function updateRegistro($data, $id)
	{
		if($this->db->update($this->_nameTable,$data, array('id_registro' => $id))){
			return TRUE;
		}
			return FALSE;
	}
	
	/**
	 * 
	 * Esta es la funcion que te permite eliminar un registro de la base de datos.
	 * @param integer $id
	 */
	public function deleteRegistro($id)
	{
		$fechaHoy = date('Y-m-d H:i:s');
		
		$data = array('estatus_error' => 1,
					  'fecha_cierre'  => $fechaHoy);
		
		if($this->db->update($this->_nameTable, $data, array("id_registro" => $id))){
			return true;
		}
			return false;
	}
	
	public function getErrorbyDepartartamento()
	{
	      $registro = $this->db->get("EQS_VistaRegistros");
	    
	      if($registro->num_rows() == 0)
		       return false;

			$registro_array = array();
			
			foreach ($registro->result() as $record){
				
				   $dias = $this->chcalendario->calcularDias($record->fecha_usuario);
				   
			       $porcentage = ($dias/$record->dias_error) * 100;
			     	
			     	 if ($porcentage <= 70) {
			     	 	$indicador = "<img src='http://company24h.com/c24h/public/images/1.png'/>";
			     	 }else{
			     	    $indicador = "<img src='http://company24h.com/c24h/public/images/3.png'/>";
			     	 }
				
				    $registro_array[] = array($record->id_registro,
				                             $record->NombreUsuario,
				                             $record->id_usuario_responsable,
				                             $record->NombreUsuarioRegistrado,
				                             $record->company_referencia,
				                             $record->Departamento,
				                             $dias,
				                             $indicador);
			}
			
			return $registro_array;        
	}
	
	public function getQuejasSugerencias(){
		
		$registrosquesug = $this->db->get("EQS_QuejasoSugerencias");
		
		if($registrosquesug->num_rows() == 0)
			return false;

			$registro_array = array();
			
			foreach ($registrosquesug->result() as $record){
				
				$registro_array[] = array($record->id_registro,
										$record->fecha_sistema,
										$record->company_referencia,
										$record->tipo_contacto,
										$record->detalle_registro,
										$record->mail,
										$record->contacto,
										$record->telefono);
			}
			
			   return $registro_array;
	 }
	
}
	


class RegistroEqsTable
{
	
	private $_idRegistro = 0;
	private $_detalleRegistro = "";
	private $_idUsuarioRegistro = 0;
	private $_idUsuarioResponsable = 0;
	private $_fechaUsuario;
	private $_fechaSistema;
	private $_companyReferencia = "";
	private $_idClasificacion = 0;
	private $_idTipoError = 0;
	private $_estatusError;
	private $_fechaCierre;
	private $_tipoContacto;
	private $_mail;
	private $_contacto;
	private $_telefono;
	private $_comentario;
	
	public function __construct($dataObjeto)
	{
		$this->_idRegistro = $dataObjeto->id_registro;
		$this->_detalleRegistro = $dataObjeto->detalle_registro;
		$this->_idUsuarioRegistro = $dataObjeto->id_usuario_registro;
		$this->_idUsuarioResponsable = $dataObjeto->id_usuario_responsable;
		$this->_fechaUsuario = $dataObjeto->fecha_usuario;
		$this->_fechaSistema = $dataObjeto->fecha_sistema;
		$this->_companyReferencia = $dataObjeto->company_referencia;
		$this->_idClasificacion = $dataObjeto->id_clasificacion;
		$this->_idTipoError = $dataObjeto->id_tipo_error;
		$this->_estatusError = $dataObjeto->estatus_error;
		$this->_fechaCierre = $dataObjeto->fecha_cierre;
		$this->_tipoContacto = $dataObjeto->tipo_contacto;
		$this->_mail = $dataObjeto->mail;
		$this->_contacto = $dataObjeto->contacto;
		$this->_telefono = $dataObjeto->telefono;
		$this->_comentario = $dataObjeto->Comentario;
	}
	
	public function getIdRegistro()
	{
		return $this->_idRegistro;
	}
	
	public function getDetalleRegistro()
	{
		return $this->_detalleRegistro;
	}
	
	public function getIdUsuarioRegistro()
	{
		return $this->_idUsuarioRegistro;
	}
	
	public function getIdUsuarioResponsable()
	{
		return $this->_idUsuarioResponsable;
	}
	
	public function getFechaUsuario()
	{
		return $this->_fechaUsuario;
	}
	
	public function getFechaSistema()
	{
		return $this->_fechaSistema;
	}
	
	public function getCompanyReferencia()
	{
		return $this->_companyReferencia;
	}
	
	public function getIdClasificacion()
	{
		return $this->_idClasificacion;
	}
	
	public function getIdTipoError()
	{
		return $this->_idTipoError;
	}
	
	public function getEstastusError()
	{
		return $this->_estatusError;
	}
	
	public function getFechaCierre()
	{
		return $this->_fechaCierre;
	}
	
	public function  getTipoContacto()
	{
		return $this->_tipoContacto;
	}
	
	public function getMail()
	{
		return $this->_mail;
	}
	
	public function getContacto()
	{
		return $this->_contacto;
	}
	
	public function getTelefono()
	{
		return $this->_telefono;
	}
	
	public function getComentario()
	{
		return $this->_comentario;
	}
}